
/**
 * Beschreiben Sie hier die Klasse BinSuchBaum.
 * 
 * @author (Ihr Name) 
 * @version (eine Versionsnummer oder ein Datum)
 */
public class BinSuchBaum implements BinSuchBaumInterface
{
    ItemArray datenArray = new ItemArray();
    Knoten wurzel = null;

    private static final String BEREITS_VORHANDEN = "Das Element ist schon vorhanden!";

    public BinSuchBaum (){

    }

    private Knoten einhaengen (Object obj, Knoten w) throws Exception{
        int index = datenArray.head;
        Knoten k = new Knoten(obj);
        k.setIndex(index);
        if (w == null){
            w = k;
            return w;
        }
        Item kWert = (Item)k.getWert();
        Item wWert = (Item)w.getWert();        
        int compare = kWert.compareTo(wWert);
        if (compare == 0){
            throw new BereitsVorhandenException( BEREITS_VORHANDEN );
        }else if (compare > 0){ 
            datenArray.add(obj);
            w.setRechts(einhaengen(obj,w.getRechts()));
            k.setVater(w);
            return w;
        }else {
            datenArray.add(obj);
            w.setLinks(einhaengen(obj,w.getLinks()));
            k.setVater(w);
            return w;
        }
    }

    public void einfuegen(Comparable obj)throws Exception{
        try{
            wurzel = einhaengen(obj,wurzel);
            System.out.println(wurzel);
        }catch (Exception e){
            System.err.println(e);
        }      
    }

    public String ausgebenInOrder(Knoten k){

        return "leer";

    }

    public String toString () {
        return (wurzel != null) ? wurzel.toString() : "";
    }   

}
